package com.liveneo.adapter.base.service.impl;

import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.liveneo.adapter.base.service.ConfigurationService;
import com.liveneo.system.base.utils.StringUtils;

/**
 * 配置文件服务实现类
 * 
 * @author liveneo
 *
 */
@Service
public class ConfigurationServiceImpl implements ConfigurationService {
    /**
     * 忽略地址列表串，以英文逗号间隔
     */
    @Value(value = "${mobile.ignore.urls}")
    private String ignoreMobileUrls;
    /**
     * OSS服务器上传密钥
     */
    @Value(value = "${oss.access.key.id}")
    private String accessKeyId;
    /**
     * OSS服务器上传密码
     */
    @Value(value = "${oss.access.key.secret}")
    private String accessKeySecret;
    /**
     * OSS服务器外网地址
     */
    @Value(value = "${oss.endpoint}")
    private String endpoint;
    /**
     * OSS服务器内网地址
     */
    @Value(value = "${oss.endpoint.internal}")
    private String endpointInternal;
    /**
     * OSS服务器bucket名称
     */
    @Value(value = "${oss.bucket.name}")
    private String bucketName;
    /**
     * 中兴OSS服务器bucket名称
     */
    @Value(value = "${oss.bucket.name.zte}")
    private String bucketNameVideo;
    /**
     * OSS服务器访问url过期时间
     */
    @Value(value = "${oss.out.of.date}")
    private String outOfDate;

    /**
     * 获取忽略MobileHttpFilter过滤器处理的手机访问URL列表
     * 
     * @return
     */
    @Override
    public List<String> getIgnoreMobileUrlList() {
        List<String> ignoreUrlList = new ArrayList<String>();
        if (StringUtils.isNotBlank(this.ignoreMobileUrls)) {
            // 将多个url拼接的字符串以逗号分隔
            String[] ignoreUrlArray = StringUtils.split(this.ignoreMobileUrls, ',');
            // 分别将忽略的url放到List中
            for (String ignoreUrl : ignoreUrlArray) {
                if (StringUtils.isNotBlank(ignoreUrl)) {
                    ignoreUrlList.add(StringUtils.trim(ignoreUrl));
                }
            }
        }
        return ignoreUrlList;
    }

    /**
     * 获取OSS服务器上传密钥
     */
    @Override
    public String getAccessKeyId() {
        return this.accessKeyId;
    }

    /**
     * 获取OSS服务器上传密码
     */
    @Override
    public String getAccessKeySecret() {
        return this.accessKeySecret;
    }

    /**
     * 获取OSS服务器外网地址
     */
    @Override
    public String getEndpoint() {
        return this.endpoint;
    }

    /**
     * 获取OSS服务器内网地址
     */
    @Override
    public String getEndpointInternal() {
        return this.endpointInternal;
    }

    /**
     * 获取OSS服务器bucket名称
     */
    @Override
    public String getBucketName() {
        return this.bucketName;
    }

    /**
     * 获取中兴OSS服务器bucket名称
     */
    @Override
    public String getBucketNameVideo() {
        return this.bucketNameVideo;
    }

    @Override
    public String getBucketNameByKey(String key) {
        return key.startsWith("msplatform") ? this.bucketName : this.bucketNameVideo;
    }

    /**
     * 获取OSS服务器访问url过期时间
     */
    @Override
    public String getOutOfDate() {
        return this.outOfDate;
    }
}
